package cn.stylefeng.guns.modular.auth.service;

import java.util.List;

import cn.stylefeng.guns.modular.auth.domain.dto.AuthPriorityDTO;
import cn.stylefeng.guns.modular.auth.entity.AuthPriorityEntity;
import com.baomidou.mybatisplus.extension.service.IService;
    
/**
 * @author allen
 * @date 2021/4/12 10:07
 * @version 1.0
 */
public interface AuthPriorityService extends IService<AuthPriorityEntity>{


    int updateBatch(List<AuthPriorityEntity> list);

    int updateBatchSelective(List<AuthPriorityEntity> list);

    int batchInsert(List<AuthPriorityEntity> list);

    int insertOrUpdate(AuthPriorityEntity record);

    int insertOrUpdateSelective(AuthPriorityEntity record);


    /**
     * 查询跟权限列表
     * @return 权限DTO列表
     */
    List<AuthPriorityDTO> listRootPriorities();


    /**
     * 根据parentId去查询某个权限的子权限
     * @param parentId 父权限id
     * @return 权限列表或者空列表
     */
    List<AuthPriorityDTO> getPrioritiesByParentId(Long parentId);


    AuthPriorityDTO getPrioritiesById(Long id);

    /**
     * 第一，你必须先删除最底层的子权限，然后一级一级往上删除，删除到当前的权限

     * 第二，你除了删除权限之外，你还得care一下角色、账号跟权限之间的关联关系，
     * 我们要做一个check，也就是说，如果这个权限还跟有一些角色和账号跟之进行关联，就不能直接删除
     * 根据id删除权限
     * @param id
     * @return
     */
    Boolean deleteById(Long id);
}
